在构建生产级LLM应用时，优化模型性能是必经之路。本文从提示词工程、模型微调和检索增强生成（RAG）​三个维度，结合技术原理与实践案例，探讨如何系统性提升LLM的垂直领域表现。

# 提示词工程

提示词是用户与LLM交互的核心媒介，其设计直接影响模型输出的精准度。

## ​结构化提示词设计

- 字符串模版（角色、问题、目标、补充要求）
- 对话模版：通过对话形式的语境让大模型继续对话

## 优化技巧：​MMR

MMR（max marginal relevance 最大边缘相关性）是一种基于信息检索的多样性筛选算法，可在长文本场景下，通过多样性筛选保留关键信息。

## 提示词存储方式

- F-string
- jinji2
- 分层提示词（角色和性格、行为、不允许）
- 序列化（json、yaml、txt）

# 微调

当提示词工程触及性能天花板时，微调（Fine-tuning）成为突破瓶颈的关键。

## 微调分类

- 指令微调：数据集字段（input、output、instruction）
  场景：智能教育、智能办公、智能翻译、数据分析
- 对话微调：通过对话形式的数据集指导大模型
  场景：智能客服系统、聊天机器人、语言助手
- 领域适配：领域数据集（input、output、instruction、domain）
  场景：医疗适配领域、法律适配领域、金融适配领域
- 文本分类：将输入的内容贴上标签，数据集（text、label）
  场景：情感分析、内容审核、新闻分类、意图识别
- 模型推理：有推理过程的数据集
- 强化学习：给模型的输出进行打分、归类（好与不好）等操作，再把这个打分数据集输入给大模型
- 多模态微调：前提是预训练模型需要有多模态能力

## 微调参数

- 训练轮数：复习次数
- 学习率：学习方法的调整幅度
- 批量大小：一次处理的题目数量（数量少学习得更深入，数量多学习的更快）

## 数据集格式

- Alpaca ：通用数据集格式。
- Share GPT：适用于多轮对话、数据调用场景。

## 数据集分类

- 训练集：模型学习规律核心资料。
- 验证集：检测模型举一反三能力，过程中调整学习方法。
- 测试集：评估模型真实水平。
- 完整集：训练集 + 验证集 + 测试集。常规情况：70%训练集 + 15%验证集 + 15%测试集；小数据场景：80%训练集 + 10%验证集 + 10%测试集。

## 知识蒸馏

概念：当部署大模型成本较高时，用小模型来代替大模型。用大模型产出的数据集来训练小模型的过程称为知识蒸馏。

## 工具

- colab：google线上python执行平台
- jupyter：开源python执行平台，在本地运行
- unsloth：大模型微调工具
- nomic：向量化工具
- hugging face：大模型开源平台

# RAG

RAG（检索增强生成）通过外挂知识库弥补模型静态知识的局限性，尤其在需要实时数据支持的场景中不可或缺。

## 文档切割步骤

1. 将文档切割成小的、有意义的块。
2. 将小块组合成大块。
3. 达到一定大小后，创建与下一个块重叠的部分。

## 切割分类

- 按字符切割
- 按代码切割
- 按token切割

## 向量数据库

- Milvus
- Faiss
- Pinecone
- Chroma
- LanceDB

## 工具

- doctran：开发工具，用于文档总结、精炼、翻译。

## 检索优化

- 多重查询：把一个问题扩展成多个，同时进行向量匹配，取重叠部分
- 上下文压缩：压缩器会把检索出来的内容交给大模型进行内容筛选
- mmr：最大边缘相关性检索
- 相似性打分检索
- lost in the middle，当文本被索引时，中间部分检索性能会下降，所以要把相关性高的文本放在两边。
